--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
scripts/build-backend.js b255dbb03e693a26b11a1be4d0563201bc276ec2 (b255dbb0) Text, 3.15 KB
T8b949e#!/usr/bin/env node
Tff7b72const Tb4b4b4{ Te6edf3spawnSync Tb4b4b4} Tff7b72= Te6edf3requireTb4b4b4(Ta5d6ff"child_process"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fs Tff7b72= Te6edf3requireTb4b4b4(Ta5d6ff"fs"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3requireTb4b4b4(Ta5d6ff"path"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3crypto Tff7b72= Te6edf3requireTb4b4b4(Ta5d6ff"crypto"Tb4b4b4)Tb4b4b4;
Tff7b72function Te6edf3getFilesTb4b4b4(Te6edf3dirTb4b4b4, Te6edf3fileList Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readdirSyncTb4b4b4(Te6edf3dirTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Tff7b72of Te6edf3filesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3name Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3dirTb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fsTb4b4b4.Te6edf3statSyncTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4.Te6edf3isDirectoryTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3getFilesTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3fileListTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3fileListTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3fileListTb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3generateManifestTb4b4b4(Te6edf3buildDirTb4b4b4, Te6edf3manifestPathTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Generating backend integrity manifest..."Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3files Tff7b72= Te6edf3getFilesTb4b4b4(Te6edf3buildDirTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3manifest Tff7b72= Tb4b4b4{
Te6edf3_metadataTff7b72: Tb4b4b4{
Te6edf3versionTff7b72: T79c0ff1Tb4b4b4,
Te6edf3dateTff7b72: Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"T"Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4,
Te6edf3timeTff7b72: Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"T"Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"."Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3filesTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Tff7b72of Te6edf3filesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3relativePath Tff7b72= Te6edf3pathTb4b4b4.Te6edf3relativeTb4b4b4(Te6edf3buildDirTb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3relativePath Tff7b72=== Ta5d6ff"backend-manifest.json"Tb4b4b4) Tff7b72continueTb4b4b4;
Tff7b72const Te6edf3fileBuffer Tff7b72= Te6edf3fsTb4b4b4.Te6edf3readFileSyncTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Te6edf3cryptoTb4b4b4.Te6edf3createHashTb4b4b4(Ta5d6ff"sha256"Tb4b4b4)Tb4b4b4.Te6edf3updateTb4b4b4(Te6edf3fileBufferTb4b4b4)Tb4b4b4.Te6edf3digestTb4b4b4(Ta5d6ff"hex"Tb4b4b4)Tb4b4b4;
Te6edf3manifestTb4b4b4.Te6edf3filesTb4b4b4[Te6edf3relativePathTb4b4b4] Tff7b72= Te6edf3hashTb4b4b4;
Tb4b4b4}
Te6edf3fsTb4b4b4.Te6edf3writeFileSyncTb4b4b4(Te6edf3manifestPathTb4b4b4, Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3manifestTb4b4b4, Tff7b72nullTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff`Ta5d6ffManifest saved to Tffd700${Te6edf3manifestPathTffd700}Ta5d6ff (Tffd700${Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3manifestTb4b4b4.Te6edf3filesTb4b4b4)Tb4b4b4.Te6edf3lengthTffd700}Ta5d6ff files)Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3platform Tff7b72= Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3PLATFORM Tff7b72|| Te6edf3processTb4b4b4.Te6edf3platformTb4b4b4;
Tff7b72const Te6edf3arch Tff7b72= Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3ARCH Tff7b72|| Te6edf3processTb4b4b4.Te6edf3archTb4b4b4;
Tff7b72const Te6edf3isWin Tff7b72= Te6edf3platform Tff7b72=== Ta5d6ff"win32" Tff7b72|| Te6edf3platform Tff7b72=== Ta5d6ff"win"Tb4b4b4;
Tff7b72const Te6edf3targetName Tff7b72= Te6edf3isWin Tff7b72? Ta5d6ff"ReticulumMeshChatX.exe" Tff7b72: Ta5d6ff"ReticulumMeshChatX"Tb4b4b4;
T8b949e// Create architecture-specific build directory
Tff7b72const Te6edf3platformFolder Tff7b72= Te6edf3isWin Tff7b72? Ta5d6ff"win32" Tff7b72: Ta5d6ff"linux"Tb4b4b4;
Tff7b72const Te6edf3buildDirRelative Tff7b72= Ta5d6ff`Ta5d6ffbuild/exe/Tffd700${Te6edf3platformFolderTffd700}Ta5d6ff-Tffd700${Te6edf3archTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3buildDir Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3__dirnameTb4b4b4, Ta5d6ff".."Tb4b4b4, Te6edf3buildDirRelativeTb4b4b4)Tb4b4b4;
T8b949e// Allow overriding the python command (e.g., to use wine python for cross-builds)
Tff7b72const Te6edf3pythonCmd Tff7b72= Te6edf3processTb4b4b4.Te6edf3envTb4b4b4.Te6edf3PYTHON_CMD Tff7b72|| Ta5d6ff"poetry run python"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(
Ta5d6ff`Ta5d6ffBuilding backend for Tffd700${Te6edf3platformTffd700}Ta5d6ff (target: Tffd700${Te6edf3targetNameTffd700}Ta5d6ff, output: Tffd700${Te6edf3buildDirRelativeTffd700}Ta5d6ff) using: Tffd700${Te6edf3pythonCmdTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3env Tff7b72= Tb4b4b4{
Tb4b4b4...Te6edf3processTb4b4b4.Te6edf3envTb4b4b4,
Te6edf3CX_FREEZE_TARGET_NAMETff7b72: Te6edf3targetNameTb4b4b4,
Te6edf3CX_FREEZE_BUILD_EXETff7b72: Te6edf3buildDirRelativeTb4b4b4,
Tb4b4b4}Tb4b4b4;
T8b949e// Split pythonCmd to handle arguments like "wine python"
Tff7b72const Te6edf3cmdParts Tff7b72= Te6edf3pythonCmdTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff" "Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3cmd Tff7b72= Te6edf3cmdPartsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3args Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3cmdPartsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4, Ta5d6ff"cx_setup.py"Tb4b4b4, Ta5d6ff"build"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Te6edf3spawnSyncTb4b4b4(Te6edf3cmdTb4b4b4, Te6edf3argsTb4b4b4, Tb4b4b4{
Te6edf3stdioTff7b72: Ta5d6ff"inherit"Tb4b4b4,
Te6edf3shellTff7b72: Tff7b72falseTb4b4b4,
Te6edf3envTff7b72: Te6edf3envTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72throw Te6edf3resultTb4b4b4.Te6edf3errorTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3status Tff7b72!== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(Te6edf3resultTb4b4b4.Te6edf3status Tff7b72|| T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3fsTb4b4b4.Te6edf3existsSyncTb4b4b4(Te6edf3buildDirTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3manifestPath Tff7b72= Te6edf3pathTb4b4b4.Te6edf3joinTb4b4b4(Te6edf3buildDirTb4b4b4, Ta5d6ff"backend-manifest.json"Tb4b4b4)Tb4b4b4;
Te6edf3generateManifestTb4b4b4(Te6edf3buildDirTb4b4b4, Te6edf3manifestPathTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Ta5d6ffBuild directory not found (Tffd700${Te6edf3buildDirTffd700}Ta5d6ff), manifest generation skipped.Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Build failed:"Tb4b4b4, Te6edf3errorTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3processTb4b4b4.Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────